SamVS Change History (from V5.132) ============================== V5.133 - Mod: Literal Strings in listfile now decoded into readable text - Mod: Literal Strings used in FARPTR oder _cptr32 are relocated into segment CONSTUPPER Listfile contains annotation regarding relocation or if particular strings are locked by 16 Bit operations. - Fix: Hover-Watch not working with file paths containing dots. - Fix: Enhanced detection for unsafe use of _cptr32 (i.e. array arithmetic in argument) V5.134 (dlinkP16 V5.134) - Fix: Hitting a Breakpoint in SAM5xxx debugging does not properly load Flags from SAM. Stepping over a consecutive conditional instruction will end debugging session by timeout/Stack error if SamVS and the physical SAM do not agree on execution path. - Fix(Link): Ignore Segment fixup overflow for Segment/Mask Fixup - Fix(Optim): Decoded strings (from V5.133) may inject control characters into listfile which caused SamVS to stuck when switching to listfile. - Fix(Debug): Single Step into Macro in CacheMode may fail. - New(Asm): Supporting Label suffix $SEGMENT$ for immediate statements to return Segment portion of a symbol (previously used suffix _SEGMENT_ is now deprecated) - New(Asm): Supporting Label suffix $OFFSET$ for immediate statements to return 16 Bit offset of a symbol (ignoring Segment) Example: extrn SomeSymbol ; R1 contains Index li R7, SomeSymbolWidth umul R1 ; 16 Bit Offset calculation lw R0, R7 adi R0, SomeSymbol$OFFSET$ li R1, SomeSymbol$SEGMENT$ ; DR0 now 32 Bit address - Mod: Experimental Support for array operations in _cptr32 argument (i.e. _cptr32(&SomeArray[SomeIndex]) Issues an "Experimental" Warning when used (may be removed in a future version) - Mod: Enhanced DLR/DLXI optimization (complements rdxtmem32 operations) DLR DRb, DRa DLXI DRa, DRb replaced by DLXI DRa, DRa DLXI DRb, DRa DLR DRc, DRb replaced by DLXI DRc, DRa V5.135, require libCRTP16 V5.135 and libSys V4.647 - Fix: FATAL String length calculation wrong, may be overwritten by whatever follows in CONSTUPPER segment. - Fix: SamVS may block on breakpoint if stack is corrupted. - Fix: File->SaveAs not working (saving file in "current" folder, which is whatever was opened last) - New(ASM): .area and SEGMENT instructions supporting push/pop to preserve and restore current segment (EXPERIMENTAL). - Mod: Improved FATAL Handler (registers not touched), supporting custom handler libraries to update: libFile (FATAL "FATAL: IOSTACK OVERFLOW") libUSB (FATAL "UsbEnum: Invalid Setup Request %R4 %R5 %R6 %R7") libUSB (FATAL "USBAC: EP0 Buffer Address %DR5x not accessible from P24") - New: _setFarPtr inline expansion - New: 32Bit BigEndian (C) read/write memory inline expansion - New: _swap and _bswap inline expansion - New(Link): Linker adds CRC16 checksum right before regular P16 checksum. P16 checksum will reliably change even with tiny source modifications (i.e. swapped lines). May be verified using the regular USB CRC16 algorithm (Polynomial=0x8005, Reverse, Init=0xFFFF, Negated) from begin up to ImageSize-2: _Sys_CRC16_Init(&CRC16_USB, _SYS_CRCF_REVERSE|_SYS_CRCF_INIT|_SYS_CRCF_NEGATE, 0x8005); - New: _smul inline expansion - New: _umul32 inline expansion - New: Trace format %s supporting display of literal (constant) strings. - Fix: Tooltip may show up with debugger not running V5.136 (dlinkP16 V5.136) - Mod(Link): User specified Data Segments will be declared to the debugger (DEFGLOBAL) with complete segment base address (allows symbols placed in "foreign" segments like FASTDATA to be used properly in memory view, watches etc.) - Fix(Link): CRC calculation for encrypted image wrong - Fix(Watch): 16 Bit Signed values not sign extended (therefor displayed as unsigned) - Mod(Trace): Rearranged columns in Trace list - New(Trace): Supporting sprintf-alike in-place splitting and formatting of argument - New(Trace): Extended trace message filtering - New(Trace): Supporting format type e to output FLOAT values in scientific format - New(Trace): Precision specification (i.e. %.3f) for FLOAT formats - New(Trace): Precision specification (i.e. %.1u) for INTEGER formats, assuming value is scaled by powers of 10 to display decimals - New(Trace): If message starts with +, it is consolidated into the previous trace entry to allow more variables to be displayed in the same event. V5.137, require libCP16 V4.631 - Fix(Debug): SamVS no longer switches to Debug-Mode if connection to board can not established. - Mod(Optimizer): Reworked to prepare for DIV/MOD PUSH/POP invocation to be replaced by LFUNC. This is disabled for time being since it fails with variable argument functions. There should be no different code generation compared to previous version. V5.137c - Mod(Asm): Supporting $SEGMENT$/$OFFSET$ for CPI/SBI V5.140 (dlinkP16 V5.140) - Fix(Link): Duplicate Symbols now show up as errors in SamVS instead of only be listed in .link file. - Version push to V5.140 libBwBlt ======= V4.626 - Mod: Migrating all text functions using const char* to macros on SAM5xxx platform - New: _G_TextfEx V4.627 - Fix: Text Functions may not properly clip if drawing starts above clip area. V4.630 - Mod: Reworked to support Queue and Screenbuffer to be placed outside data segment (for example FASTDATA). - Mod: _BwBlt_PipeBusy returns length of pending data to process - New: _BwBlt_InitCore32, _BwBlt_GetScreenLineAddress libCP16 ====== V4.629 - New: Math16 and Math32 utility function for Division/Modulo - New: Math64 division supporting return of remainder V4.630 - Fix: _fgt returns wrong result on negative numbers with same exponent - Mod: _fgt, _fsin, _fcos slightly enhanced implementations (much faster for |phi| > pi) - New: _fcmp, _flimit, _fatan, _fpolyEx V4.631 - New: Signed division for Math16/Math32 - New: Updated C Wrappers for Division and Modulo for massive performance enhancement - Prepared to replace legacy push/pop invocation of _DIV/_MOD functions with LCALL This is currently not used by SamVS since it is incompatible with functions using variable arguments. V4.632 - Fix: R2 not properly saved in _fsin - Fix: improper _ftan calculation libCrtP16 ======= V5.135 - New: Improved Fatal Handler (allowing user callback) libFile ===== V4.647 - Mod: Rebuild for enhanced FATAL handling, require SamVS V5.135 libFX5000 ======== V4.628 - InstrumentFX module: fix for cleaning the Delay line when in Stereo mode and increasing the Delay time libMIDI ====== V4.610 - Reworked MIDI Parser - NRPN callback semantics changed. The NRPN callback now receives channel, invocation type, user parameter and always a left-aligned 14 Bit value, ready to be used for volume functions and similar. Coarse value is stored in Bits Value[14:8] so Value needs to be shifted right 8 times in case only the coarse value is used. If your application uses a NRPN callback function, its declaration needs to be changed from old: void MidiNrpnCallback(WORD NrpnIdx, WORD NrpnValue) to new: void MidiNrpnCallback(WORD Channel, WORD UserParam, WORD Flags, WORD Index, WORD Value) - Proper RPN decoding - Support decoding of System Exclusive packets (Byte or Word buffer) - Supporting common event callback allowing easy migration from libAppUtil - New: Utility functions to create SysEx events from byte streams - New: Utility functions to read 7 Bit from binary data (to be sent via SysEx) libStr ==== V4.613 - Added _strcatEx/_strcpyEx and removing strcat/strcpy on SAM5xxx libSys ===== V4.645 - New: Improved Fatal Handler (allowing user callback) - New: _Sys_SetFatalHandlerEx - New: _Sys_FatalContextExpand - New: CRC Support - New: _swap and _bswap inline expansion - New: Enhanced 32 Bit Memory access for BigEndian (native C) values V4.646 - Mod: CRC supporting HighMemory (0x80000000..0xFFFFFFFF) V4.647 - New: _smul and _umul32 inline expansion - New: _Sys_GetData24Base V4.648 - Fix: _Sys_I2CWriteRegisterBytes corrupts stack if only a single byte should be transmitted V4.649 - New: _Sys_P24CyclesPerFrame - New: _Sys_Timestamp functions libUSB ===== V4.643 - Mod: Rebuild for enhanced FATAL handling, require SamVS V5.135 libUXChg ======= V4.644 - added XT25F16B SPI Flash devices into UXC2D_GENERIC_QSPI driver list V4.645 - added PUYA SPI Flash devices into UXC2D_GENERIC_QSPI driver list